namespace YM{
    export abstract class IUpdateSystem{
        getType(){
            return (<any>this).__proto__.constructor;
        }
        abstract run(o,dt);
    }
    export abstract  class UpdateSystem<T> extends IUpdateSystem{
        run(o,dt):void{
            this.update(o,dt);
        }
        abstract  update(self:T,dt:number):void;
    }
}